package searchteam.beans.stateless;

import java.util.Collection;

import searchteam.client.beansMirrors.*;

public interface SearchTeamFacadeRemote {

	/**
	 * Recuperation de toutes les personnes.
	 * @return	toutes les personnes
	 */
	public Collection<PersonMirror> getAllPersons();
	
	/**
	 * Creation d'une personne.
	 * @param person	La personne.
	 */
	public int createPerson(PersonMirror person);

	/**
	 * Modification d'une personne.
	 * @param person	La personne.
	 */
	public int updatePerson(PersonMirror person);
	
	/**
	 * Suppresion d'une personne
	 * @param person	La personne.
	 */
	//public void removePerson(PersonMirror person);
	
	/**
	 * Recuperation de tous les papiers.
	 * @return	tous les papiers
	 */ 
	public Collection<PaperMirror> getAllPapers();
	
	/**
	 * Creation d'un papier.
	 * @param paper	Le papier.
	 */
	public int createPaper(PaperMirror paper);
	
	/**
	 * Modification d'un papier.
	 * @param paper	Le papier.
	 */
	public int updatePaper(PaperMirror paper);
	
	/**
	 * Suppression d'un papier.
	 * @param paper	Le papier.
	 */
	//public void removePaper(PaperMirror paper);
	
	/**
	 * Recuperation de toutes les equipes.
	 * @return	toutes les equipes.
	 */
	public Collection<TeamMirror> getAllTeams();
	
	/**
	 * Creation d'une equipe.
	 * @param team	L'equipe.
	 */
	public int createTeam(TeamMirror team);
	
	/**
	 * Modification d'une equipe.
	 * @param team	L'equipe.
	 */
	public int updateTeam(TeamMirror team);
	
	/**
	 * Ajout d'une personne a une equipe.
	 * @param person	La personne.
	 * @param team		L'equipe.
	 */
	public void addPersonToTeam(PersonMirror person, TeamMirror team);
	
	/**
	 * Recuperation des papiers ecrits par une Team. 
	 * @param person	La personne.
	 * @return	les papiers ecrits par la team
	 */
	public Collection<PaperMirror> getPapersOfTeam(TeamMirror person);
	
	/**
	 * Permet d'associer des personnes a un papier
	 * @param persons les personnes
	 * @param paper le papier
	 */
	public void linkPersonsToPaper(Collection<PersonMirror> persons, PaperMirror paper);
	
	/**
	 * Permet d'associer des papiers a une personne
	 * @param papers les papiers
	 * @param person la personne
	 */
	public void linkPapersToPerson(Collection<PaperMirror> papers, PersonMirror person);

}
